<?php

/**
 * Класс RL_ViewManager -- управляет представлениями
 *
 * @package RL
 * @author Lucky <lucky@jetstyle.ru>
 * @version $Id: ViewManager.php 158 2007-10-03 06:21:40Z lucky $
 */
class RL_ViewManager
{
	var $views = array();
	public function __construct ($ctx, $config)
	{
		$this->ctx = $ctx;
		$this->setViewConfig($config);
	} // end of __construct

	//!an accessor
	/**
	 * findByName возвращает имя шаблона для данного ключа
	 *
	 * @param mixed $tpl_key ключ шаблона //
	 * @access public
	 * @return void
	 */
	public function findByName ($name)
	{
		if (!isset($this->views[$name])) {
			$this->views[$name] = $this->buildView($name);
		}
		return $this->views[$name];
	} // end of function findViewByName

	public function setViewConfig ($config)
	{
		$this->config = $config;
	} // end of method setViewConfig

	public function buildView ($name)
	{
		$o = NULL;
		do {
			if (!isset($this->config[$name])) {
				break;
			}

			$vinfo = $this->config[$name];
			$class = 'RL_View_'.$vinfo['type'];
			if (!$this->ctx->rh->useClass($class)) {
				break;
			}
			$o = new $class($this->ctx);
			$o->setTemplate($vinfo['name']);
		} while (false);
		return $o;
	} // end of function createView
}

